#pragma once

class RapiStreamHolder
{
public:
    RapiStreamHolder(IRAPIStream *rapiStream);
    IRAPIStream *Stream();
    ~RapiStreamHolder();
private:
    IRAPIStream *m_RapiStream;
};

class FindHolder
{
public:
    ~FindHolder();
    HRESULT FirstFile(const std::wstring &path, WIN32_FIND_DATA &fileSystemItem);
    HRESULT NextFile(WIN32_FIND_DATA &fileSystemItem);
private:
    HANDLE m_FileHandle;
};

class RegKeyHolder
{
public:
    ~RegKeyHolder();
    HKEY Key();
    HRESULT OpenKey(HKEY preDefKey, const std::wstring &subKey);
private:
    HKEY m_Key;
};